home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Code Resources / Ingis WDEF 1.3 / Demo ƒ / Variant ƒ / CustomStubs.p next >
Text File  |  1997-05-09  |  7KB  |  181 lines

  1. { *** DEMO FOR the IngisWDEF WDEF building package *** }
  2.  
  3. {© 1994-1995 by Ingemar Ragnemalm}
  4. {You may use it freely as long as credits are given in the final program.}
  5.  
  6.  
  7. {This demo creates a window, where the number of corners is determined from the variant code.}
  8. {Try changing the variant code in the WIND resource in ResEdit. The window also has a bizarre drag}
  9. {blob in the upper left corner.}
  10.  
  11. {This unit holds all custom code}
  12.  
  13. unit CustomStubs;
  14.  
  15. interface
  16.     uses
  17. {$IFC UNDEFINED THINK_PASCAL}
  18.         Types, QuickDraw, ToolUtils, Windows, 
  19. {$ENDC}
  20.         IngisWDEFUtils;
  21.  
  22. {Lots of routines, right? Don't worry; you can skip several of them if you don't plan on supporting zoom box,}
  23. {close box or grow regions, and you can call some default routines in IngisWDEFUtils.}
  24.  
  25.     procedure GetGrowRgn (varCode: integer; macWindow: WindowPeek; var growRgn: RgnHandle);
  26.     procedure GetCloseBox (varCode: integer; dragBar: RgnHandle; var closeBox: Rect);
  27.     procedure GetZoomBox (varCode: integer; dragBar: RgnHandle; var zoomBox: Rect);
  28.     procedure DrawCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  29.     procedure DrawZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  30.     procedure DrawHitCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  31.     procedure DrawHitZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  32.     procedure DrawDragBar (varCode: integer; macWindow: WindowPeek; dragBar: RgnHandle; colorFlag: Boolean);
  33.     procedure BuildCustomRegions (varCode: integer; theRect: Rect; contRgn, dragRgn: RgnHandle);
  34.     procedure DrawScrollFrame (varCode: integer; macWindow: WindowPeek; theRect: Rect);
  35.     procedure DrawTheGrowIcon (varCode: integer; macWindow: WindowPeek; theRect: Rect; growRgn: RgnHandle; colorFlag: Boolean);
  36.     procedure InitMyWindow (varCode: integer; macWindow: WindowPeek);
  37.     procedure DisposeMyWindow (varCode: integer; macWindow: WindowPeek);
  38.  
  39. {** Constants **}
  40.     const
  41.         kFrameWidth = 2;        { Thickness of frame around window. 1 is normal.}
  42.         kShadowLength = 2;        { Size of drop shadow. 1 is normal.}
  43.         kMinDepthForColor = 4;    { Smallest pixel size for color. 8 (256 colors) is normal. }
  44.         kMinWidth = 100;        { Limits for the dragging rectangle? }
  45.         kMinHeight = 100;
  46.  
  47.     type
  48.         MyDataRecord = record
  49.                 theWindowState: WStateData;
  50. {Insert any globals you need here!}
  51.             end;
  52.         MyDataPtr = ^MyDataRecord;
  53.         MyDataHandle = ^MyDataPtr;
  54.  
  55. implementation
  56.  
  57. {*****************************************************************************}
  58. { GetGrowRgn}
  59. {        Return the region with the grow icon, if any.}
  60. { *****************************************************************************}
  61.  
  62.     procedure GetGrowRgn (varCode: integer; macWindow: WindowPeek; var growRgn: RgnHandle);
  63.     begin
  64.     end;
  65.  
  66. {*****************************************************************************}
  67. { GetCloseBox}
  68. {        Pass back a rectangle which encloses the close box of the window}
  69. { *****************************************************************************}
  70.  
  71.     procedure GetCloseBox (varCode: integer; dragBar: RgnHandle; var closeBox: Rect);
  72.     begin
  73.     end;
  74.  
  75.     procedure GetZoomBox (varCode: integer; dragBar: RgnHandle; var zoomBox: Rect);
  76.     begin
  77.     end;
  78.  
  79. {*****************************************************************************}
  80. { Draw close box and zoom box, in normal and hit state }
  81. {        Draw the close box in "hit" state. This can be as simple as an InvertRect. }
  82. { *****************************************************************************}
  83.  
  84.     procedure DrawCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  85.     begin
  86.     end; {}
  87.     procedure DrawZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  88.     begin
  89.     end; {}
  90.     procedure DrawHitCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  91.     begin
  92.     end; {}
  93.     procedure DrawHitZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  94.     begin
  95.     end; {}
  96.  
  97. {*****************************************************************************}
  98. { DrawDragBar, BW and Color version}
  99. {        Draw the drag bar (not close box/zoom box)}
  100. { *****************************************************************************}
  101.  
  102.     procedure DrawDragBar (varCode: integer; macWindow: WindowPeek; dragBar: RgnHandle; colorFlag: Boolean);
  103.     begin
  104.         PaintRgn(dragBar);
  105.     end; {DrawDragBar}
  106.  
  107. {*****************************************************************************}
  108. { BuildCustomRegions}
  109. {        Build the contents region and the drag bar region. The ONLY mandatory procedure!}
  110. { *****************************************************************************}
  111.  
  112.     procedure BuildCustomRegions (varCode: integer; theRect: Rect; contRgn, dragRgn: RgnHandle);
  113.         var
  114.             center, radius: Point;
  115.             i: integer;
  116.             step: Real;
  117.             tmpRect: Rect;
  118.     begin
  119.         OpenRgn;
  120.         if varCode = 0 then {0: No corners, isn't that an oval?}
  121.             FrameOval(theRect)
  122.         else if varCode = 2 then {2: Well, let's make a rounded-corner one}
  123.             begin
  124.                 FrameRoundRect(theRect, 30, 30);
  125.             end
  126.         else {varCode = number of corners!}
  127.             begin
  128.                 center.h := (theRect.right + theRect.left) div 2;
  129.                 center.v := (theRect.top + theRect.bottom) div 2;
  130.                 radius.h := (theRect.right - theRect.left) div 2;
  131.                 radius.v := (theRect.bottom - theRect.top) div 2;
  132.                 step := 2 * 3.1416 / varCode;
  133.                 MoveTo(center.h + radius.h, center.v);
  134.                 for i := 1 to varCode do
  135.                     begin
  136. {Jag tänkte mig att traska runt cirkeln och bygga en månghörning!}
  137.                         LineTo(center.h + trunc(radius.h * cos(i * step)), center.v + trunc(radius.v * sin(i * step)));
  138.                     end;
  139.                 LineTo(center.h + radius.h, center.v);
  140.             end;
  141.         CloseRgn(contRgn);
  142.  
  143.         SetRect(tmprect, theRect.left - 10, theRect.top - 10, theRect.left, theRect.top);
  144.         OpenRgn;
  145.         FrameOval(tmpRect); {Äsch, det gick inget bra!}
  146.         CloseRgn(dragRgn);
  147.     end; {BuildCustomRegions}
  148.  
  149. {*****************************************************************************}
  150. { DrawScrollFrame}
  151. {        Draw the scroll frame, if any (used both when resizing and when drawing the grow icon) }
  152. { *****************************************************************************}
  153.  
  154.     procedure DrawScrollFrame (varCode: integer; macWindow: WindowPeek; theRect: Rect);
  155.     begin
  156.     end; {DrawScrollFrame}
  157.  
  158. {*****************************************************************************}
  159. { DrawTheGrowIcon, BW and Color version}
  160. {        Draw the grow icon, if any }
  161. { *****************************************************************************}
  162.  
  163.     procedure DrawTheGrowIcon (varCode: integer; macWindow: WindowPeek; theRect: Rect; growRgn: RgnHandle; colorFlag: Boolean);
  164.     begin
  165.     end; {DrawTheGrowIcon}
  166.  
  167. {*****************************************************************************}
  168. { InitMyWindow and DisposeMyWindow }
  169. {        Can often be empty. Set the spareFlag in InitMyWindow if the variant should have a zoom box. }
  170. {        InitMyWindow may initialize any globals in MyDataHandle(macWindow^.dataHandle). }
  171. {        DisposeMyWindow must restore/dispose fields in MyDataHandle(macWindow^.dataHandle) as needed. }
  172. { *****************************************************************************}
  173.  
  174.     procedure InitMyWindow (varCode: integer; macWindow: WindowPeek);
  175.     begin
  176.     end; {}
  177.     procedure DisposeMyWindow (varCode: integer; macWindow: WindowPeek);
  178.     begin
  179.     end; {}
  180.  
  181. end.